# 利用DDA算法绘制两条直线，分别是：L1(Point(10, 10), Point(100, 80))， L2(Point(-50, 100), Point(100, -50))

# numpy 矩阵操作
import numpy as np
# matplotlib 绘制矩阵
import matplotlib.pyplot as plt
width = 600
height = 460

def axis_shift(x, y):
    # 到坐标原点：从计算坐标转到绘制坐标
    x = x + width//2
    y = -y + height//2
    return x, y

def draw_dda_line(x1, y1, x2, y2, img):
    # 计算两点之间的距离
    dx = x2-x1
    dy = y2-y1
    # 确定步骤数，取决于在哪个方向上跨度更大
    # 计算每一步的增量
    x_inc = 1
    y_inc = 1.0*dy/dx
    # 起始点
    x = x1
    y = y1
    # 在图像上绘制点
    steps = dx
    for _ in range(steps + 1):
        img[int(y+0.5), x] = [255, 0, 0]  # 红色
        x += x_inc
        y += y_inc


# 加载或创建一个图像
img = np.zeros((height, width, 3), dtype=np.uint8)  # 创建一个256x256的黑色画布

# 绘制线段
draw_dda_line(*axis_shift(10, 10), *axis_shift(200,100), img)
# ctrl + /
draw_dda_line(*axis_shift(-50, 100), *axis_shift(100, -50), img)

# 显示图像
plt.imshow(img)
plt.show()